<?php  #JS,Сss компрессор, компилятор img resizer
include('../../admin/cfg.main.php');
function dev($file_content)
{
	if(!DEV_MODE)return ;//Для разработки закоментировать
	die($file_content);
}
function r404()
{
	header("HTTP/1.0 404 Not Found");
	die('Такого файла не существует');
}

function cDirs($fPath)
{
 $dirs=explode('/',$fPath);
 $end=count($dirs)-1;
 $save='..';
 foreach($dirs as $i=>$dir)
  if($i<$end)
  {
   $save.='/'.$dir;
   if(!is_dir($save)
    && !(mkdir($save,0777) && chmod($save, 0777)))
   {
    // echo $save;
    return false;
   }
  }
 return true;
}
function saveFile($fPath,$file)
{


 if( cDirs($fPath))file_put_contents('../'.$fPath,$file);
 chmod('../'.$fPath, 0777);
 echo '/*first get*/'. $file;
}

//Ссылка на файл
$fPath=preg_replace('#^/inc/([^?]*)(\?.*|)$#','\1',$_SERVER['REQUEST_URI']);
//Оределяю тип
$path=explode('/',$fPath);
if(count($path)<2 || $path[1]=='')r404(); //Нельзя определить тип
if($path[0]!='images' && !file_exists($fPath))r404();
/* print_r($_GET);
echo $_SERVER['REQUEST_URI'],
'<br />', $_SERVER['QUERY_STRING']; */
//print_r($path);


switch($path[0])
{
	case 'css':
		header('Content-type: text/css');
		//Убираю переносы строк
		$file=file_get_contents($fPath);
		if(preg_match('#Dee==(.+?)==Dee#s',$file,$res))//Вытаскиваю объявленные переменные
		{
			$vars=array();
			$varCount=0;
			//убираю пробелы и коментарии
			if(preg_match_all('#!(.+?)=(.*?);#',preg_replace(array('#[\s]+#'),'',$res[1]),$res2,PREG_SET_ORDER))
				foreach($res2 as $var)
				{
					$vars['names'][$varCount]="!{$var[1]};";
					$vars['values'][$varCount++]="{$var[2]}";
				}
			//Если найдены и оформлены заменяю
			if($varCount>0)
				$file=str_replace($vars['names'],$vars['values'],$file);
		}
		dev($file);
		//Сжимаю СSS
		$file=preg_replace(array('#\/\*.*?\*\/#','@[\s]+@','#\s*(\{[^\{\}]*)\s+(;[^\{\}]*\})\s*#'),array('',' ','\1;\2'),str_replace(array("\r\n","\r","\n"),'',$file));
		saveFile($fPath,$file);
	break;
	case 'js':
		header('Content-type: text/js');
		$file=file_get_contents($fPath);
		dev($file);
		$file=preg_replace(array('#//.*#','#[\s]+$#','#\/\*.*?\*\/#s','#[\s]+#'),array('','','',' '),$file);
		$file=str_replace(array("\r\n","\r","\n"),'',$file);
		saveFile($fPath,$file);
	break;
	case 'images': //Масштабирование изображений
		if(empty($_GET['tpath']))r404();
		$type=array('jpg' =>'jpeg','jpeg' =>'jpeg','gif'=>'gif','png'=>'png');
		$fmt=preg_match('#\.(\w{2,4})$#',$fPath,$res)?$res[1]:false;

		if($fmt && isset($type[$fmt]))
		{
			//header('Content-type: image/' . $type[$fmt]);
			abstract class Load_use {}
			include('../../admin/modules/imager.php');
			$fPath='../'.$fPath;
			$image=imager::getOriginalName_($fPath);
			$fPath=str_replace('/inc/','',$_GET['tpath']);
			if($image && isset($GLOBALS['IMAGE_SIZES'][$image['size']]) && cDirs($fPath))
			{
				$fPath='../'.$fPath;
				$size=$GLOBALS['IMAGE_SIZES'][$image['size']];
				imager::resize_($image['name'],$fPath,$size[0],$size[1],false,true);

				break;
			}
		}
	default:
		r404();
}
